Computer systems may run applications and processes used in Network Function Virtualization (NFV) that may communicate and provide connectivity to other devices, such as hardware devices. For example, applications and processes may share memory with physical devices. In computer systems, shared memory may refer to memory that can be accessed simultaneously by different resources, such as computer hardware or software. Such availability allows a single copy of data to service multiple resources, instead of providing a separate copy of the data for each specific resource. The computer system may allow direct device access from the userspace in order to avoid the overhead of communicating with a supervisor and/or operating system (OS).